package com.ruoyi.eduManage.service;

import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.eduManage.domain.EduHomeworkSubmit;
import com.ruoyi.eduManage.domain.vo.EduHomeworkSubmitVO;
import com.ruoyi.eduManage.domain.vo.HomeworkImportResultVO;

/**
 * 作业提交记录Service接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface IEduHomeworkSubmitService 
{
    /**
     * 查询作业提交记录
     * 
     * @param submitId 作业提交记录主键
     * @return 作业提交记录
     */
    public EduHomeworkSubmit selectEduHomeworkSubmitBySubmitId(Long submitId);

    /**
     * 查询作业提交记录列表
     * 
     * @param eduHomeworkSubmit 作业提交记录
     * @return 作业提交记录集合
     */
    public List<EduHomeworkSubmit> selectEduHomeworkSubmitList(EduHomeworkSubmit eduHomeworkSubmit);

    /**
     * 新增作业提交记录
     * 
     * @param eduHomeworkSubmit 作业提交记录
     * @return 结果
     */
    public int insertEduHomeworkSubmit(EduHomeworkSubmit eduHomeworkSubmit);

    /**
     * 修改作业提交记录
     * 
     * @param eduHomeworkSubmit 作业提交记录
     * @return 结果
     */
    public int updateEduHomeworkSubmit(EduHomeworkSubmit eduHomeworkSubmit);

    /**
     * 批量删除作业提交记录
     * 
     * @param submitIds 需要删除的作业提交记录主键集合
     * @return 结果
     */
    public int deleteEduHomeworkSubmitBySubmitIds(Long[] submitIds);

    /**
     * 删除作业提交记录信息
     * 
     * @param submitId 作业提交记录主键
     * @return 结果
     */
    public int deleteEduHomeworkSubmitBySubmitId(Long submitId);
    
    /**
     * 将作业提交记录转换为VO对象
     * 
     * @param eduHomeworkSubmit 作业提交记录
     * @return 作业提交记录VO
     */
    public EduHomeworkSubmitVO convertToVO(EduHomeworkSubmit eduHomeworkSubmit);
    
    /**
     * 将作业提交记录列表转换为VO列表
     * 
     * @param list 作业提交记录列表
     * @return 作业提交记录VO列表
     */
    public List<EduHomeworkSubmitVO> convertToVOList(List<EduHomeworkSubmit> list);
    
    /**
     * 导入作业提交记录数据
     * 
     * @param file 导入文件
     * @return 导入结果
     */
    public HomeworkImportResultVO importHomeworkSubmit(MultipartFile file, String classCode, String dueDate);
    
    /**
     * 获取学生每日提交详情统计数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param classCode 班级编码
     * @param expectedDays 预期天数
     * @return 每日提交详情数据
     */
    public Map<String, Object> getDailySubmitDetailData(String startDate, String endDate, String classCode, Integer expectedDays);

    /**
     * 生成本周积分统计图片（至今日）PNG字节
     * @param date 任意当周日期，格式yyyy-MM-dd
     * @param classIds 学生表中的班级ID列表（字符串），可为班级编码
     * @return PNG字节数组，若生成失败返回null
     */
    public byte[] generateWeeklyPointsImage(String date, java.util.List<String> classIds);
}
